var obj = {
  name: 'obj',
  foo: function () {
    console.log(this);
  }
}

// obj.foo()
// 1.call/apply的显示绑定高于隐式绑定
obj.foo.call('abc')
obj.foo.apply('abc')

// 2.bind与隐式绑定
// var bar = obj.foo.bind('cba')
// bar()

// 3.更明显的比较
function foo2() {
  console.log(this);
}

var obj2 = {
  name: 'obj2',
  foo: foo2.bind('aaa')
}

obj2.foo() // String:'aaa'